{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## TensorFlow Softmax Regression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A multinomial logistic (aka \"softmax\") regression class for multi-class classification tasks."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> from mlxtend.tf_classifier import TfSoftmaxRegression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Overview"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![](./TfSoftmaxRegression_files/softmax_schematic_1.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Please refer to the documentation of the equivalent NumPy implementation [`classifier.SoftmaxRegression`](../classifier/SoftmaxRegression.md) for details."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 1 - Gradient Descent"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Simple gradient descent training via `minibatches=1`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Iteration: 20/20 | Cost 0.37"
     ]
    },
    {
     "data": {
      "image/png": "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\neu369TB/fggqM2eGheJuuCHs23vvsqDSu7eGgqTuIg8nCaOBcYmQUvoocStgHICZXQ90cPfBHm71\nbPQosJmtAr5z90VJzbcC081sOOFR4jzCxNtz6vlaRETSTosWZe8Fys8Pk2mXLAlBZdas8PX++0P7\n9ttvPBSUkwObbRb1FUhjEotw4u6TzKwtcA1hvZLXgX7uvjrRJQvoWMNzzjaz04FrE9t/CUM6WuNE\nRKSOzMLqtLvuGhaAgzDJds6csrsrf/kLrF0bgskBB2w8FNS2baTlS8xFPuckTjTnREQkddavD+ur\nlIaVmTPhk0/Cvj33DCHloIPCts8+0DwW/1yW2kqrOSciIpKeWrQId0wOOAAuvjgM+Xz4YVlQmT07\nLLO/YUN4uWFOTllYOeigsAaL5q40TQonIiLSIMzC8vk77xzevgzw7bdQVBReajh3bniE+aabwr72\n7TcOKwccECbqSvpTOBERkchsuSX07Ru2Up9+Gh5dLg0s110XHm02gy5dNg4sXbtqOCgd6SMVEZFY\nad9+45cabtgA77xTFlbmzg2PMpeUhOGgAw746XCQNG4KJyIiEmvNmoU7JF27wtChoa38cNCjj8LI\nkWFfhw7hkefS+S45OXo6qLFROBERkUansuGg0rAyb14IK6Urqu+0UwgppWFFgSXeFE5ERCQttG+/\n8ZuY3eH996GwMGyvvQY33lgWWDp1KgsqCizxonAiIiJpyQx22y1sp54a2kpK4IMPQlApDS0VBZbk\nOyzbbRfdNTRVCiciItJkZGSUBZbTTgttJSU/vcNyww3w9ddhf6dOG4cVBZb6p3AiIiJNWkZGeFnh\n7rtXHFhK77IkB5addoL99w9b9+7ha6dOWjQuVRROREREyqkssLz3Xggqr78etjvvhNWJt8BlZpYF\nltKtSxdo2TK662isFE5ERESqISMD9tgjbHl5oc0dVqyA+fPLAsvTT8Ott4b9LVqEgJJ8h2W//aBN\nm+iuozFQOBEREakls/CUUPv20L9/WfuaNfDmm2WBZf78sBbL99+H/Tvv/NO7LDvtpGGhUgonIiIi\nKbbVVuGty716lbX9+CMsXlwWWF5/HW67DT7/POxv06bszsq++4ata9ewpktTo3AiIiLSAJo3L1vp\ntvTFh+7wyScb32F5+mkYMybsM4POncvCyr77Qrduoa1Zs2ivpz4pnIiIiETEDH72s7Add1xZ+7ff\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x105ffec50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from mlxtend.tf_classifier import TfSoftmaxRegression\n",
    "from mlxtend.data import iris_data\n",
    "from mlxtend.plotting import plot_decision_regions\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# Loading Data\n",
    "X, y = iris_data()\n",
    "X = X[:, [0, 3]] # sepal length and petal width\n",
    "\n",
    "# standardize\n",
    "X[:,0] = (X[:,0] - X[:,0].mean()) / X[:,0].std()\n",
    "X[:,1] = (X[:,1] - X[:,1].mean()) / X[:,1].std()\n",
    "\n",
    "lr = TfSoftmaxRegression(eta=0.75, \n",
    "                         epochs=20, \n",
    "                         print_progress=True, \n",
    "                         minibatches=1, \n",
    "                         random_seed=1)\n",
    "\n",
    "lr.fit(X, y)\n",
    "\n",
    "plt.plot(range(len(lr.cost_)), lr.cost_)\n",
    "plt.xlabel('Iterations')\n",
    "plt.ylabel('Cost')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Continue the training if cost could be further decreased via additional epochs. Instead of training the classifier another 20 epochs, we modify the epochs and set them to 500. Also, we want to make sure to set `init_weights` to `False` in order to re-use the model parameters from the previous training."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Iteration: 500/500 | Cost 0.13"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x105ffe6d8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "lr.epochs = 500\n",
    "lr.fit(X, y, init_params=False)\n",
    "plt.plot(range(len(lr.cost_)), lr.cost_)\n",
    "plt.xlabel('Iterations')\n",
    "plt.ylabel('Cost')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nZcDTKtqAAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x105ffe320>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_decision_regions(X, y, clf=lr)\n",
    "plt.title('Softmax Regression - Gradient Descent')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "### Predicting Class Labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Predicted class labels: [0 1 2]\n"
     ]
    }
   ],
   "source": [
    "print('Predicted class labels:', lr.predict(X[[0, 99, 149]]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Predicting Class Probabilities"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Predicted class probabilities:\n",
      " [[  9.92753923e-01   7.24608498e-03   6.90939350e-09]\n",
      " [  5.35254739e-03   9.61461246e-01   3.31862085e-02]\n",
      " [  1.28487918e-05   2.01715842e-01   7.98271239e-01]]\n"
     ]
    }
   ],
   "source": [
    "print('Predicted class probabilities:\\n', lr.predict_proba(X[[0, 99, 149]]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 2 - Stochastic Gradient Descent"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Stochastic gradient descent training sample by sample can be achieved by setting the number of minibatches equal to the number of samples in the training dataset; everything between `minibatches=1` and `minibatches=len(y)` is \"minibatch\" stochastic gradient descent."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Iteration: 10/10 | Cost 0.15"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10cabff28>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/Sebastian/miniconda3/lib/python3.5/site-packages/ipykernel/__main__.py:27: DeprecationWarning: Note that importing this function from mlxtend.evaluate has been deprecated and will not longer be supported in mlxtend 0.6. Please use`from mlxtend.plotting import plot_decision_regions` instead.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nc9k7EwnGDRuWdx1BytnGDRvG9k7Wsx0YN2xYKPEOHTgwUDz51rPn0KF5+wlL0HJAEZFczIV857Ne\ne+ihiAUUDUFquvPV+QcVZD356tlv/ctfeGfz5g6P7zl0KBd85CMAgdr88L77WLVpU4c244YN41tn\nnx043iBtolLnH5Tq/EWkg1NPDXTrTyX/MlBuNd1B4n1x6dIur0twl39dgmLFE6XtJyLSYwGTvw77\nl4Fyq+kOEm/Q6xIUKx4RkThR8i8j5VbTHbiGP4TrEoQVj4hIHCTyNxEREZG+RMlfREQkZnTYv4yU\nW0134Br+EK5LEFY8IiJxoORfBsqtpjtIvGFdlyCseERE4kSlfmWi3Gq6i3ldgrDiEREpe6rzFxER\niZmAyV8T/kRERGJGyV9ERCRmlPxFRERiRslfREQkZpT8RUREYkbJX0REJGaU/EVERGJGyV9ERCRm\nlPxFRERiRslfREQkZpT8RUREYkbJX0REJGaU/EVERGJGyV9ERCRmlPxFRERiRslfREQkZpT8RURE\nYkbJX0REJGYKkvzNbG8z+7WZvWVmTWb2ppldZWZVhehPREREgqss0HoPBAw4H1gGvAv4NVADzChQ\nnyIiIhJAQZK/c+5h4OGMRf8ys58AF6LkLyIiUlLFPOc/BNhUxP5EREQkh6IkfzObBFwM3FyM/kRE\nRKRz3Ur+ZnatmaW6+Gk1s/2znlMH/Bn4nXPujjCDFxERke7r7jn/nwAz87R5K/0fMxsLPAE855z7\nzyAdzHr6aWY9+2yH5dOPPZbp06Z1I1QRERHJxZxzhVmxN+J/Avg7cK4L2tFDDxUmIBERkb7u1FMt\nSLOCzPb3R/xPAcvxZvePMvPicc6tK0SfIiIiEkyh6vw/BOzr/6z0lxnggIoC9SkiIiIBFGS2v3Pu\nLudcRdZPwjmnxC8iIlJiura/iIhIzCj5i4iIxIySv4iISMwo+YuIiMSMkr+IiEjMKPmLiIjEjJK/\niIhIzCj5i4iIxIySv4iISMwo+YuIiMSMkr+IiEjMKPmLiIjEjJK/iIhIzCj5i4iIxIySv4iISMwo\n+YuIiMSMkr+IiEjMKPmLiIjEjJK/iIhIzCj5i4iIxIw550odQ7bIBSQiIlImLEgjjfxFRERiRslf\nREQkZpT8RUREYkbJX0REJGaU/EVERGJGyV9ERCRmlPwjZtasWaUOIfK0jfLTNspP2yg/baP8ynUb\nKflHTLl+kIpJ2yg/baP8tI3y0zbKr1y3kZK/iIhIzCj5i4iIxIySv4iISMwo+YuIiMRMFG/sE2tm\nNt05V54zSIpE2yg/baP8tI3y0zbKr1y3kZK/iIhIzOiwv4iISMwo+YuIiMSMkr+IiEjMKPmLiIjE\njJK/iIhIzCj5i4iIxIySfwSZ2d5m9msze8vMmszsTTO7ysyqSh1blJjZZWb2VzPbbmabSh1PFJjZ\nl8xsuZntMLP5ZvbeUscUJWZ2rJnNMbPVZpYys4+VOqaoMbNLzWyBmW01s3Vm9qCZ7V/quKLEzC40\ns4Vm1uD/PG9mHyl1XN2h5B9NBwIGnA8cDHwNuBC4upRBRVAVcC/wq1IHEgVm9kngp8CVwHuAhcDD\nZjaipIFFywDgFeCLgC5yktuxwI3A0cCJeH9nj5jZHiWNKlpWApcAhwNHAE8As83soJJG1Q26yE+Z\nMLNvABc65yaVOpaoMbPzgOudc8NKHUspmdl84G/Oua/4vxvel9QNzrnrShpcBJlZCjjdOTen1LFE\nmb/zuB44zjn3XKnjiSoz2wh8wzk3s9SxBKGRf/kYAujQtuTknxI6Ang8vcx5e/aPAVNLFZf0CUPw\njpLo+ycHM0uY2aeAGmBeqeMJqrLUAUh+ZjYJuBj4eqljkcgaAVQA67KWrwMOKH440hf4R49+Djzn\nnPtHqeOJEjN7F16y7w80Amc45xaXNqrgNPIvIjO71p9k1NlPa/bEGjOrA/4M/M45d0dpIi+enmwj\nESmYm/DmHX2q1IFE0GLgMOAovHlHd5vZgaUNKTiN/IvrJ0C+80Fvpf9jZmPxJpI855z7z0IGFiHd\n2kbSZgPQCozOWj4aWFv8cKTcmdkvgZOBY51z75Q6nqhxziXZ/V30spkdBXwFuKh0UQWn5F9EzrmN\nwMYgbf0R/xPA34HPFzKuKOnONpLdnHMtZvYicAIwB9oO2Z4A3FDK2KT8+In/NGCac25FqeMpEwmg\nutRBBKXkH0H+iP8pYDkwAxjlfY+Dcy77nG5smdl4YBiwN1BhZof5Dy11zm0vXWQl8zPgTn8nYAFe\niWgNcGcpg4oSMxsATMIrpQXY1//cbHLOrSxdZNFhZjcB04GPAdvNLH00qcE5t7N0kUWHmV2Ddzp2\nBVALnANMAz5cyri6Q6V+EeSXrmWf3ze8CdwVJQgpksxsJvDZHA8d75x7ptjxRIGZfRFvh3E0Xj37\nfznnXihtVNFhZtOAJ+lY43+Xcy42R9i64pdA5koMn3PO3V3seKLIzH4NfBDYE2gAXgV+6Jx7oqSB\ndRfSu/gAAABVSURBVIOSv4iISMxotr+IiEjMKPmLiIjEjJK/iIhIzCj5i4iIxIySv4iISMwo+YuI\niMSMkr+IiEjMKPmLiIjEjJK/iIhIzCj5i4iIxIySv4iISMz8P61e5X89R9NVAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x116017f60>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from mlxtend.data import iris_data\n",
    "from mlxtend.evaluate import plot_decision_regions\n",
    "from mlxtend.tf_classifier import TfSoftmaxRegression\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# Loading Data\n",
    "\n",
    "X, y = iris_data()\n",
    "X = X[:, [0, 3]] # sepal length and petal width\n",
    "\n",
    "# standardize\n",
    "X[:,0] = (X[:,0] - X[:,0].mean()) / X[:,0].std()\n",
    "X[:,1] = (X[:,1] - X[:,1].mean()) / X[:,1].std()\n",
    "\n",
    "lr = TfSoftmaxRegression(eta=0.5, \n",
    "                         epochs=10, \n",
    "                         minibatches=len(y), \n",
    "                         print_progress=True, \n",
    "                         random_seed=1)\n",
    "lr.fit(X, y)\n",
    "\n",
    "plt.plot(range(len(lr.cost_)), lr.cost_)\n",
    "plt.xlabel('Iterations')\n",
    "plt.ylabel('Cost')\n",
    "plt.show()\n",
    "\n",
    "plot_decision_regions(X, y, clf=lr)\n",
    "plt.title('Softmax Regression - Gradient Descent')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 3 - MNIST"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that `mnist_data` just contains a random 5000-sample subset of MNIST (~10% of the original dataset size)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Iteration: 100/100 | Cost 6.26"
     ]
    },
    {
     "data": {
      "image/png": "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\nb7/4vjz7bBny2mOPUoGZPLlMaj7++MUvG58/H7bYolSMOoe2Zs0qX6++Otx6a3lfS+u558pcou5W\nh0nSsq5ZQpt+AAAXS0lEQVS/KzDOgVnONXtn67e9rcxzef75srrorLPK/JottoCvfKXn5332s+Ue\nTqedVoaqdt21/GLfcMMybDN/fglGDz0Eo0aVqwgv7grCmfDRj5br31x0UXkfG2wAJ59cXufvf+/5\nub/+NTz8MHzqUwu2rbIKXHJJuX/U4t7HksyaVVY2vfOdsO668Ja3lEnRy6vrr4dvfrPVvZC0LLIC\nsxjLQwVmoGWWSbeTJ5erCb/6arlWzZprLmjz7LNl2ffaa5cJwKuuuujrXHQRHH10qd7st9+C7a++\nWgLQqFHwm99034d/+ZcSeG6+edF9p55aloH/+Mdw2GGNv6/nny8h7YorymqoXXeFsWNLJWjDDcu1\negYtR9e9fu45GDeuhDkoF1PcY4+WdknSAHMOjHNglkt33ZW56qqZ73lPmYPT6dVXy7yXVVbJPOqo\n7p/785+XeTHXXLPovttuK/t+9avunztnTuYHP1jaHH985uzZS+7rgw9mbrxx5lprZZ52WuYjjyzY\nd/PNZa7Nl7+85NdZFsyfn/nd72auuWbm61+f+YMfZI4ZU+ZPdXS0uneSBlJ/z4FpeUio8sMA01pX\nX10mBn/60+XzD3wgc/XVy0/trrtmzpjR/fM6OjL32itz000zH3984V+c73tf2V4firp7/gUXZA4e\nnLnzzplPPdVz25tuKr+st9wy87HHum9zyiklxPz5z0t6x+3t5Zcz99ijfH8+/OHM558v23/727Lt\n2mv79ngdHZn3328wWpbdemvm9tsv/t+gqssAY4BZrn3jG+WnFDK32qpUMhpZKXTffZkrr1yeN2JE\n5rvelfm5z5UgccEFjR379tvLSq211sq84orMZ55Z+JflpZdmDhlSwtK0aT2/zty5JXC96U2Lb7c0\nbr65hK099ui/YyxOR0fm2LElYN5ww6L7dtklc4cd+i5szJqVedhh5fv7n/9piFlW7bln+R5/8IOt\n7ol6wwBjgFmudXSU4Z6//a35506dmnnVVZmf/3zmv/975vDhmeuumzlzZuOv8dxzmfvssyBEDRuW\nudNOmQccUL7+0IcaG2Z6/PHy3EMO6dtftn//exlmg/KX6pprZo4enfnCC313jEZceGHpw2WXdb//\n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\na401yg1Yp01b8HHQoHLLjE98YsHNUx98sNyz7LLLSmVq6lQ48MBS+ai/5QeUm64ec0yZmwKlOrHx\nxmVO1803l3ucHX54qa5svXXP56yjA/7t38oNXddaq7zn7m4hAuVGst//fqk4dD5eeqm8344OGDas\nVKK22aZUsF56acHjkUcO4LjjrmanncocsM73k1mqdVOmlDlXZ51Vql4/+EGZRwXlnB9wQHlPV11V\n+ve//1seN99cvq/rrw/77FPeyz77lPPXrMxyjM4429FRvldXXVVuVXLjjaXdPvuU26nsv//C88nu\nvReOPBLuvruc97Fjy/e/Fbcy6e8KzHITYCJiMDALeG9mXl23/YfAsMx8dzfPMcC0gL9MB57nfOA1\ne84zyxDOiBEL7uS+OC+9VH7pTphQhmlmzy6/sDsfa69dfiH39Ev2/vvLsNJb3gLHHtvzjV/nzy8T\nax95BB59tHx8/PEy4fuYYxof6pk8Gd761jLUdOKJjT2n3iuvwF/+smCI86GHyjDa8OHlMWwY/Pa3\nBzBv3tW8+GJ5zsiRZXhoypRyfqD8ov+f/yl96Pqep0wpk5Bvv718vdJK5V5u73hHGW698cYSsO67\nr+zfYIMSajof661Xzv2wYSVQDhtWhmvvu68Ej3vuKZ/PmrXo+1txxXKsgw8ufVhrrZ7Pxbx58PWv\nw+mnl9daddUyTLfbbqUfU6aU4dJnnikBde21y7Be533k1luvfC8nTSqBdtKk8pojRy5YaLDxxmUo\n9u9/X7BI4JFHys9c55BvfweY5ej2crwBWBGY2mX7VGDzge+OJDUuooSCRg0fXn7h7bln74631Vbl\npqlLsuKKpbqyuApLI9Zfv1SqejPfCUpFaknv94ADSiXj4YdLCLnrrlI1GjEC1lmnfBw5svwC7846\n65Qbs/7oRyWw7L77wnNi9t+/fJwypczjmTSpBLPJk0s4efrpUjHqavDgEiC23Rbe+94STiLKnKGI\nMhdozz3hDW9o7FwMGlSC4LhxJcD++c/l8c1vlmrOWmvBG98I665bwsjUqWVV2FNPLfw6EeV9brll\nCWs33ggXX1xCV6cVVihtNt+8VIVee63338NmLU8BpjdWApg0aVKr+7FcmT59OhMn9v18L/XMcz7w\nPOcDb/r06dx1VznnW21VHl1NnVoei/PWt5aPi/vVsOWWC09W7jRv3sLDXxFlovySfuk/+WR5NGul\n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\nAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1169c5908>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from mlxtend.data import mnist_data\n",
    "from mlxtend.tf_classifier import TfSoftmaxRegression\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "X, y = mnist_data()\n",
    "\n",
    "lr = TfSoftmaxRegression(eta=0.01, \n",
    "                         epochs=100, \n",
    "                         minibatches=20, \n",
    "                         print_progress=True, \n",
    "                         random_seed=1)\n",
    "lr.fit(X, y)\n",
    "\n",
    "plt.plot(range(len(lr.cost_)), lr.cost_)\n",
    "plt.xlabel('Iterations')\n",
    "plt.ylabel('Cost')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training Accuracy: 93.86%\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "y_pred = lr.predict(X)\n",
    "print('Training Accuracy: %.2f%%' % (lr.score(X, y) * 100))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x117060ef0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_digit(X, y, idx):\n",
    "    img = X[idx].reshape(28,28)\n",
    "    plt.imshow(img, cmap='Greys',  interpolation='nearest')\n",
    "    plt.title('true label: %d' % y[idx])\n",
    "    plt.show()\n",
    "plot_digit(X, y, 0)  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Prediction: 0\n"
     ]
    }
   ],
   "source": [
    "print('Prediction: %d' % lr.predict(X[0, None]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## API"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "## TfSoftmaxRegression\n",
      "\n",
      "*TfSoftmaxRegression(eta=0.5, epochs=50, n_classes=None, minibatches=1, random_seed=None, print_progress=0, dtype=None)*\n",
      "\n",
      "Softmax regression classifier.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `eta` : float (default: 0.5)\n",
      "\n",
      "    Learning rate (between 0.0 and 1.0)\n",
      "\n",
      "- `epochs` : int (default: 50)\n",
      "\n",
      "    Passes over the training dataset.\n",
      "    Prior to each epoch, the dataset is shuffled\n",
      "    if `minibatches > 1` to prevent cycles in stochastic gradient descent.\n",
      "\n",
      "- `n_classes` : int (default: None)\n",
      "\n",
      "    A positive integer to declare the number of class labels\n",
      "    if not all class labels are present in a partial training set.\n",
      "    Gets the number of class labels automatically if None.\n",
      "\n",
      "- `minibatches` : int (default: 1)\n",
      "\n",
      "    Divide the training data into *k* minibatches\n",
      "    for accelerated stochastic gradient descent learning.\n",
      "    Gradient Descent Learning if `minibatches` = 1\n",
      "    Stochastic Gradient Descent learning if `minibatches` = len(y)\n",
      "    Minibatch learning if `minibatches` > 1\n",
      "\n",
      "- `random_seed` : int (default: None)\n",
      "\n",
      "    Set random state for shuffling and initializing the weights.\n",
      "\n",
      "- `print_progress` : int (default: 0)\n",
      "\n",
      "    Prints progress in fitting to stderr.\n",
      "    0: No output\n",
      "    1: Epochs elapsed and cost\n",
      "    2: 1 plus time elapsed\n",
      "    3: 2 plus estimated time until completion\n",
      "\n",
      "- `dtype` : Array-type (default: None)\n",
      "\n",
      "    Uses tensorflow.float32 if None.\n",
      "\n",
      "**Attributes**\n",
      "\n",
      "- `w_` : 2d-array, shape=[n_features, n_classes]\n",
      "\n",
      "    Weights after fitting.\n",
      "\n",
      "- `b_` : 1D-array, shape=[n_classes]\n",
      "\n",
      "    Bias units after fitting.\n",
      "\n",
      "- `cost_` : list\n",
      "\n",
      "    List of floats, the average cross_entropy for each epoch.\n",
      "\n",
      "### Methods\n",
      "\n",
      "<hr>\n",
      "\n",
      "*fit(X, y, init_params=True)*\n",
      "\n",
      "Learn model from training data.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "- `y` : array-like, shape = [n_samples]\n",
      "\n",
      "    Target values.\n",
      "\n",
      "- `init_params` : bool (default: True)\n",
      "\n",
      "    Re-initializes model parameters prior to fitting.\n",
      "    Set False to continue training with weights from\n",
      "    a previous model fitting.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `self` : object\n",
      "\n",
      "\n",
      "<hr>\n",
      "\n",
      "*predict(X)*\n",
      "\n",
      "Predict targets from X.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `target_values` : array-like, shape = [n_samples]\n",
      "\n",
      "    Predicted target values.\n",
      "\n",
      "<hr>\n",
      "\n",
      "*predict_proba(X)*\n",
      "\n",
      "Predict class probabilities of X from the net input.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `Class probabilties` : array-like, shape= [n_samples, n_classes]\n",
      "\n",
      "\n",
      "<hr>\n",
      "\n",
      "*score(X, y)*\n",
      "\n",
      "Compute the prediction accuracy\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "- `y` : array-like, shape = [n_samples]\n",
      "\n",
      "    Target values (true class labels).\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `acc` : float\n",
      "\n",
      "    The prediction accuracy as a float\n",
      "    between 0.0 and 1.0 (perfect score).\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "with open('../../api_modules/mlxtend.tf_classifier/TfSoftmaxRegression.md', 'r') as f:\n",
    "    print(f.read())"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
